package com.itheima.maptraverse;

import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import java.util.function.BiConsumer;

public class Test {

    public static void main(String[] args) {

        //Map的三种遍历方式：

        //方式1：键找值
        //通过keySet()获取所有的key，再通过get(key)获取value

        //方式2：把键值对当成一个整体进行遍历
        //通过entrySet()获取所有的键值对，再通过getKey()和getValue()获取key和value

        //方式3：Lambda表达式
        //通过forEach()遍历，参数是一个Lambda表达式，表示对每一个键值对进行操作
        //forEach()方法接收一个BiConsumer接口，
        //BiConsumer接口中定义了一个抽象方法：accept()，参数是键和值，可以进行操作

        Map<String, Integer> map = new HashMap<>();
        map.put("张三", 23);
        map.put("李四", 24);
        map.put("张三", 29);
        map.put("王五", 23);
        map.put("赵六", 26);
        map.put("田七", 24);
        System.out.println(map);

        /*//1.将Map集合中所有的键放到一个Set集合中
        Set<String> keys = map.keySet();
        //2.遍历Set集合，获取每一个key
        for (String key : keys) {
            //3.通过key获取value
            Integer value = map.get(key);
            System.out.println(key + "=" + value);
        }*/

        /*//1.将Map集合中所有的键值对对象，放到一个Set集合中
        Set<Map.Entry<String, Integer>> entries = map.entrySet();
        //2.遍历Set集合，获取每一个键值对对象元素
        for (Map.Entry<String, Integer> entry : entries) {
            //3.通过键值对对象获取key和value
            String key = entry.getKey();
            Integer value = entry.getValue();
            System.out.println(key + "=" + value);
        }*/

        map.forEach(new BiConsumer<String, Integer>() {
            @Override
            public void accept(String key, Integer value) {
                System.out.println(key + "=" + value);
            }
        });
        //map.forEach((k, v) -> System.out.println(k + "=" + v));

    }
}
